<?php
// $Id$

/**
 * Controller_Admin_User 控制器
 */
class Controller_Admin_User extends Controller_Abstract
{

	function actionIndex()
	{
        // 为 $this->_view 指定的值将会传递数据到视图中
		# $this->_view['text'] = 'Hello!';
	}
	
	// now this actin used to create user in admin panel
	function actionReg(){
		$form = new Form_User_Reg(url('.'));

		if ($this->_context->isPOST() && $form->validate($_POST))
	    {
	        // 是 POST 提交，并且表单验证通过
	        try
	        {
	        		$data = $form->values();
	        		if(strcmp($data['password'], $data['password2']) != 0){
	        			throw new User_ComparePwdException;
	        		}
	            
	            $user = new User($data);
	            $user->setDefaultRoles();
	            $user->save();
	 
	            return $this->_redirect(url('default'));
	        }
	        catch (AclUser_DuplicateUsernameException $ex)
	        {
	        	$form['email']->invalidate("您要註冊的 email 已經存在了");
	        }catch (User_ComparePwdException $ex){
	        	$form['password2']->invalidate("您兩次輸入的密碼不一致");
	        }
	    }
	 
	    $this->_view['form'] = $form;
	    $this->_view['title'] = '用戶註冊';
	}
	
	function actionLogin()
	{
		if($this->_app->currentUser()){
			return $this->_redirect(url('default'));
		}
		
	    $form = new Form_User_Login(url('.'));
	 
	    if ($this->_context->isPOST() && $form->validate($_POST))
	    {
	    	if (!Helper_ImgCode::isValid($this->_context->imgcode)){
					$form['imgcode']->invalidate("您输入的验证码错误!");
				}else{
	        try
	        {
	            // 使用 acluser 插件的 validateLogin() 方法验证登录并取得有效的 user 对象
	            $user = User::meta()->validateLogin($form['email']->value, $form['password']->value);
	            // 将登录用户的信息存入 SESSION，以便应用程序记住用户的登录状态
	            $this->_app->changeCurrentUser($user->aclData(), $user->aclRoles());
	            // 登录成功后，重定向浏览器
	            
	            if ($this->_context->returnUrl){
	            	return $this->_redirect(urldecode($this->_context->returnUrl));
	            }
	            
	            return $this->_redirect(url('default'));
	        }
	        catch (AclUser_UsernameNotFoundException $ex)
	        {
	            $form['email']->invalidate("您输入的郵箱 {$form['email']->value} 不存在");
	        }
	        catch (AclUser_WrongPasswordException $ex)
	        {
	            $form['password']->invalidate("您输入的密码不正确");
	        }
	      }
	    }
	 
	    $this->_view['form'] = $form;
	    
	}
	
	function actionLogout()
	{
	    // 清除当前用户的登录信息
	    $this->_app->cleanCurrentUser();
	    // 重定向浏览器
	    return $this->_redirect(url('/login'));
	}
}

class User_ComparePwdException extends Exception {}